package com.zapi.ai.service;

import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

/**
 * 项目知识库服务
 * 为AI提供项目相关的背景知识
 */
@Slf4j
@Service
public class ProjectKnowledgeService {
    
    /**
     * 获取项目基本信息
     */
    public String getProjectInfo() {
        return buildProjectKnowledge();
    }
    
    /**
     * 构建项目知识库
     */
    private String buildProjectKnowledge() {
        StringBuilder kb = new StringBuilder();
        
        kb.append("# 知录Admin 项目信息\n\n");
        
        kb.append("## 项目概述\n");
        kb.append("知录Admin 是一个集成了AI助手的智能后台管理系统，核心特点：\n");
        kb.append("- 超级简单的自研工作流引擎\n");
        kb.append("- 自定义表单设计器\n");
        kb.append("- 自定义表格设计器\n");
        kb.append("- 数据集成功能\n");
        kb.append("- AI智能助手（通义千问）\n");
        kb.append("- JSON交互方式，告别BPMN繁琐操作\n\n");
        
        kb.append("## 技术栈\n");
        kb.append("### 后端\n");
        kb.append("- Java8 + Spring Boot 2.7.18\n");
        kb.append("- MyBatis Plus\n");
        kb.append("- MySQL 8\n");
        kb.append("- 阿里云通义千问（Qwen3-Max）\n\n");
        
        kb.append("### 前端\n");
        kb.append("- Vue 3\n");
        kb.append("- Element Plus\n");
        kb.append("- Vite\n\n");
        
        kb.append("## 核心功能模块\n\n");
        
        kb.append("### 1. 工作流引擎\n");
        kb.append("- 支持审批节点、条件分支节点\n");
        kb.append("- 可视化流程设计器\n");
        kb.append("- 业务表单与系统表单两种发起方式\n");
        kb.append("- 流程实例管理和任务审批\n\n");
        
        kb.append("**业务表单发起流程**：\n");
        kb.append("1. 在表单列表中创建表单\n");
        kb.append("2. 在流程列表中创建流程，选择对应的业务表单\n");
        kb.append("3. 进入流程设计器，配置流程节点（开始→审批→结束）\n");
        kb.append("4. 配置审批节点的审批人（可选择用户、部门或角色）\n");
        kb.append("5. 保存流程后，在数据列表中新增数据即可发起流程\n");
        kb.append("6. 审批人在\"我的待办\"中查看并处理任务\n\n");
        
        kb.append("**系统表单发起流程**：\n");
        kb.append("1. 系统内置了测试流程（如：测试业务流程T111）\n");
        kb.append("2. 流程变量对应传统开发的实体字段\n");
        kb.append("3. 在流程设计器中配置节点和审批人\n");
        kb.append("4. 在\"系统订单表流程发起测试\"中新增数据发起\n");
        kb.append("5. 在\"我的待办\"中审批任务\n\n");
        
        kb.append("### 2. 表单管理\n");
        kb.append("- 可视化表单设计器\n");
        kb.append("- 支持多种字段类型：输入框、多行文本、下拉选择、单选框、多选框、日期选择、时间选择等\n");
        kb.append("- 表单数据提交和查询\n");
        kb.append("- 数据导出功能\n\n");
        
        kb.append("### 3. 数据集管理\n");
        kb.append("- 多数据源支持（MySQL、PostgreSQL等）\n");
        kb.append("- 数据集创建和配置\n");
        kb.append("- 数据表查询和管理\n");
        kb.append("- 数据导出功能\n\n");
        
        kb.append("### 4. 系统管理\n");
        kb.append("- 用户管理：用户的增删改查、启用禁用\n");
        kb.append("- 部门管理：部门树形结构管理\n");
        kb.append("- 角色管理：角色权限配置\n");
        kb.append("- 菜单管理：系统菜单配置\n");
        kb.append("- 操作日志：记录用户操作行为\n\n");
        
        kb.append("### 5. 文档管理\n");
        kb.append("- 基于OnlyOffice 7.3.3社区版\n");
        kb.append("- 在线文档编辑\n");
        kb.append("- 外置保存按钮\n\n");
        
        kb.append("### 6. 文件管理\n");
        kb.append("- 文件上传下载\n");
        kb.append("- 文件格式转换\n\n");
        
        kb.append("### 7. AI智能助手（最新功能）\n");
        kb.append("- 基于阿里云通义千问（Qwen3-Max）\n");
        kb.append("- 自然语言操作系统所有功能\n");
        kb.append("- 智能参数补全\n");
        kb.append("- 自动API扫描和调用\n");
        kb.append("- 对话历史持久化\n\n");
        
        kb.append("## 项目特色\n");
        kb.append("1. **简单易用**：告别BPMN复杂配置，使用JSON交互\n");
        kb.append("2. **可视化设计**：表单、表格、流程都可视化设计\n");
        kb.append("3. **AI赋能**：通过对话操作系统，降低使用门槛\n");
        kb.append("4. **模块化架构**：Maven多模块设计，易于扩展\n");
        kb.append("5. **现代化技术栈**：Vue3 + Spring Boot，紧跟技术潮流\n\n");

        
        kb.append("## 开发状态\n");
        kb.append("- ✅ 已完成：工作流引擎核心功能、表单设计器、流程设计器、AI助手\n");
        kb.append("- 🚧 开发中：专属业务表单发起模块、更多工作流节点类型\n");
        kb.append("- 📋 规划中：更多低代码/零代码能力\n\n");
        
        kb.append("## 常见使用场景\n");
        kb.append("1. **请假审批**：创建请假表单 → 设计审批流程 → 提交请假申请 → 领导审批\n");
        kb.append("2. **采购审批**：创建采购表单 → 设计多级审批 → 提交采购申请 → 逐级审批\n");
        kb.append("3. **用户反馈**：创建反馈表单 → 收集用户反馈 → 数据导出分析\n");
        
        return kb.toString();
    }
    
    /**
     * 判断用户消息是否在询问项目信息
     */
    public boolean isAskingAboutProject(String message) {
        String lowerMessage = message.toLowerCase();
        return lowerMessage.contains("项目") || 
               lowerMessage.contains("系统") && (lowerMessage.contains("是什么") || 
                                                lowerMessage.contains("介绍") || 
                                                lowerMessage.contains("功能") ||
                                                lowerMessage.contains("作用")) ||
               lowerMessage.contains("zapi") ||
               lowerMessage.contains("干啥") ||
               lowerMessage.contains("做什么");
    }
}

